﻿using Microsoft.AspNetCore.SignalR;
using System.Threading.Tasks;

namespace SignalRBackend
{
    public class MessageHub : Hub
    {
        // 客户端调用此方法发送消息，服务器接收到后广播给所有客户端
        public async Task SendMessage(string user, string message)
        {
            await Clients.All.SendAsync("ReceiveMessage", user, message);
        }

        // 发送物料申请通知
        public async Task SendMaterialAskNotification(string materialAskCode, string message)
        {
            // 发送物料申请通知给所有客户端
            await Clients.All.SendAsync("ReceiveMaterialAskNotification", materialAskCode, message);
        }

        // 获取待办数量
        public async Task GetPendingCount()
        {
            // 此方法会由客户端调用，服务端返回待办数量
            // 实际实现中，可能需要从数据库查询未处理的物料申请单数量
            await Clients.Caller.SendAsync("UpdatePendingCount");
        }

        // 可选：当客户端连接时调用
        public override async Task OnConnectedAsync()
        {
            // 可以向所有客户端通知有新用户连接，或者只通知调用者
            await Clients.Caller.SendAsync("ReceiveMessage", "System", "Connected successfully!");
            await base.OnConnectedAsync();
        }
    }
}